package action.produit;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.TreeMap;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;

import action.general.NotreServlet;
import bdd.ProduitBdd;
import bean.produit.Declinaison;
import bean.produit.Produit;
import bean.produit.Taille;

public class ProduitAction extends NotreServlet{

		private static final long serialVersionUID = 3532463235395341487L;
		
		private int numP;
		/* (non-Java-doc)
		 * 	@see javax.servlet.http.HttpServlet#HttpServlet()
		 */

		public ActionForward execute(final ActionMapping pMapping,
				ActionForm pForm, final HttpServletRequest pRequete,
				final HttpServletResponse pReponse) {
			
			ActionErrors errors = new ActionErrors();
			
			try {
				this.numP = Integer.parseInt(pRequete.getParameter("produit"));
				Produit p = ProduitBdd.getProduit(this.numP);
				if (p == null) {
					return pMapping.findForward("error");
				}
				
				TreeMap<Taille, ArrayList<Declinaison>> combinaisons = new TreeMap<Taille, ArrayList<Declinaison>>();
				Iterator<Taille> i = ProduitBdd.getTailles(p).iterator();
				
				Taille t;
				while ( i.hasNext() ){
					t = i.next();
					combinaisons.put(t, p.getDeclinaisons(t));
				}
				p.setPrixMin(ProduitBdd.getPrixMin(p));
				p.setListImage(ProduitBdd.getImages(p));
				p.setTailles(ProduitBdd.getTailles(p));
				p.setCouleurs(ProduitBdd.getCouleurs(p));
				pRequete.setAttribute("produit", p);
				pRequete.setAttribute("categorie", ProduitBdd.getCategorieProduit(p));
				pRequete.setAttribute("declinaisons", combinaisons);

				
				return pMapping.findForward("success");
			} catch (Exception e) {
				e.printStackTrace();
				errors.add("errors",new ActionMessage("errors.exception"));
				saveErrors(pRequete,errors); 
				return (new ActionForward(pMapping.getInput()));
			}
		}
	
}
